<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Aria: Robot Parameter Files</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Aria
   &#160;<span id="projectnumber">2.9.4</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('ParamFiles.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">Robot Parameter Files </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>ARIA's robot parameter files contain information that can differ between different robot model types (e.g.</p>
<p>"p3dx", "p3dx-sh", "p3at", "p3at-sh", "amigo", "amigo-sh", etc.), and between individual robots. This includes some physical dimensions, device connection settings, and protocol conversion factors. The parameter files are included with ARIA and are installed along with the rest of ARIA in the "params" subdirectory. These files always end with ".p".</p>
<p>The parameter files are read by <a class="el" href="classArRobot.html" title="Central class for communicating with and operating the robot. ">ArRobot</a> after it connects to the robot, and stored in the <a class="el" href="classArRobot.html" title="Central class for communicating with and operating the robot. ">ArRobot</a> and <a class="el" href="classArRobotParams.html" title="Stores parameters read from the robot&#39;s parameter files. ">ArRobotParams</a> classes (Use <a class="el" href="classArRobot.html#a7be39c25062b2f327a4216e3468b35c4" title="Gets the parameters the robot is using. ">ArRobot::getRobotParams()</a> to get a pointer to its <a class="el" href="classArRobotParams.html" title="Stores parameters read from the robot&#39;s parameter files. ">ArRobotParams</a> object.)</p>
<p>When <a class="el" href="classArRobot.html" title="Central class for communicating with and operating the robot. ">ArRobot</a> connects to a robot it receives strings identifying the robot model (the model's Pioneer "subtype" or "subclass") and an individual robot nickname. It uses these names to load parameter files. It first loads the parameter file that corresponds to the model subtype, e.g. "p3dx-sh.p" or "powerbot.p" and stores those parameters. A log message is printed indicating that it loaded parameters from that file. ARIA includes robot parameter files for all current robot types. If such a file cannot be found, but ARIA recognizes the robot subtype, it stores internal default constants as those parameter values, and prints a log message indicating this.</p>
<p>Next, if a file exists which corresponds to this particular robot's nickname (<em>name</em>.p), then it loads that file, which can override any settings provided in the robot type parameters or defaults.</p>
<p>An individual robot's nickname is stored in the robot firmware configuration, and may be changed using the firmware configuration tool. For example, if a robot uses the ARCOS firmware for the SH microcontroller, connect with ARCOScf and change the "Name" parameter, then save the new configuration. Each robot is assigned a unique name when assembled and configured by MobileRobots, but you may change it if you want to use your own names. However, if you change the name stored in the firmware configuration, you must rename its parameter files in any ARIA or ARNL/SONARNL/MOGS installation on all computers that connect to it as well.</p>
<p>In almost all circumstances, modifying the standard parameters for robot types is unneccesary; change your robot's <em>name</em>.p instead.</p>
<h1><a class="anchor" id="ParamFileDeviceParams"></a>
Device Parameters</h1>
<p>The most common parameters that must be changed in <em>name</em>.p are parameters regarding how some of an individual robot's devices are connected to the robot or the onboard computer, if an individual robot has a unique configuration.</p>
<p>If you are using a <em>name</em>.p file, and later remove ARIA, reinstall the operating system and erase the disk, make a backup of this file. If you change any connections, or need to recreate a lost <em>name</em>.p file, however, you can edit <em>name</em>.p in the "params" subdirectory.</p>
<p>In addition to the parameter files, if a program is using ARIA's argument parsing and connector classes, then it can be executed with command-line arguments which also affect robot and device parameters (see <a class="el" href="CommandLineOptions.html">Command Line Option Summary</a>), and may override some of the device parameters given in the parameter file.</p>
<h2><a class="anchor" id="ParamFileGeneralParams"></a>
General Robot Parameters</h2>
<p>The "General settings", "Conversion factors" and "Movement control
parameters" sections give some general parameters about the robot. Many of these parameters are invariant for all instances of a particular robot type (such as the conversion factors, class/subclass names), and should not be changed. You could change the physical dimensions if you have modified the robot; ARNL uses these when path planning. You can also set <em>SwitchToBaudRate</em> to 0 to disable the automatic renegotiation of connection data rate after ARIA connects (if, for example, this causes problems with your particular computer or a USB-serial device).</p>
<p>For example, p3dx-sh.p contains the following:</p>
<pre class="fragment">Section General settings
Class Pioneer            ; general type of robot
Subclass p3dx-sh         ; specific type of robot
RobotRadius 250          ; radius in mm
RobotDiagonal 120        ; half-height to diagonal of octagon
RobotWidth 425           ; width in mm
RobotLength 511          ; length in mm of the whole robot
RobotLengthFront 210     ; length in mm to the front of the robot (if this is 0
                         ; (or non existant) this value will be set to half of
                         ; RobotLength)
RobotLengthRear 301      ; length in mm to the rear of the robot (if this is 0
                         ; (or non existant) this value will be set to half of
                         ; RobotLength)
Holonomic true           ; turns in own radius
MaxRVelocity 500         ; absolute maximum degrees / sec
MaxVelocity 2200         ; absolute maximum mm / sec
MaxLatVelocity 0         ; absolute lateral maximum mm / sec
HasMoveCommand true      ; has built in move command
RequestIOPackets false   ; automatically request IO packets
RequestEncoderPackets false ; automatically request encoder packets
SwitchToBaudRate 38400   ; switch to this baud if non-0 and supported on robot


Section Movement control parameters
;  if these are 0 the parameters from robot flash will be used, otherwise these
;  values will be used
SettableVelMaxes true    ; if TransVelMax and RotVelMax can be set
TransVelMax 0            ; maximum desired translational velocity for the robot
RotVelMax 0              ; maximum desired rotational velocity for the robot
SettableAccsDecs true    ; if the accel and decel parameters can be set
TransAccel 0             ; translational acceleration
TransDecel 0             ; translational deceleration
RotAccel 0               ; rotational acceleration
RotDecel 0               ; rotational deceleration
HasLatVel false          ; if the robot has lateral velocity
LatVelMax 0              ; maximum desired lateral velocity for the robot
LatAccel 0               ; lateral acceleration
LatDecel 0               ; lateral deceleration
</pre><h2><a class="anchor" id="ParamFileLaserParams"></a>
Laser Rangefinding Devices</h2>
<p>For each laser rangefinder device, a "Laser parameters" section is added to the parameter file.</p>
<pre class="fragment">Section Laser parameters
LaserType lms2xx         ; type of laser
LaserPortType            ; type of port the laser is on
LaserPort COM3           ; port the laser is on
LaserAutoConnect false   ; if the laser connector should autoconnect this laser
                         ; or not
LaserFlipped false       ; if the laser is upside-down or not
LaserPowerControlled true ; if the power to the laser is controlled by serial port connection, and ARIA should wait for laser initialization after opening connection
LaserMaxRange 0          ; Max range of the laser, 0 to use default (only use
                         ; if you want to shorten it from the default), mm
LaserX 21                ; x location of laser, mm
LaserY 0                 ; y location of laser, mm
LaserTh 0                ; rotation of laser, deg
LaserZ 0                 ; height of the laser off the ground, mm (0 means
                         ; unknown)
LaserIgnore              ; Readings within a degree of the listed degrees
                         ; (separated by a space) will be ignored
LaserStartDegrees        ; start degrees for the sensor (leave blank for
                         ; default, use this to constrain the range) (double)
LaserEndDegrees          ; start degrees for the sensor (leave blank for
                         ; default, use this to constrain the range) (double)
LaserDegreesChoice       ; degrees choice for the sensor (leave blank for
                         ; default, use this to constrain the range)
LaserIncrement           ; Increment for the sensor (leave blank for default,
                         ; use this to have a custom increment) (double)
LaserIncrementChoice     ; Increment for the sensor (leave blank for default,
                         ; use this to have a larger increment)
LaserUnitsChoice         ; Units for the sensor (leave blank for default, use
                         ; this to have a larger units)
LaserReflectorBitsChoice  ; ReflectorBits for the sensor (leave blank for
                         ; default, use this to have a larger units)
LaserStartingBaudChoice  ; StartingBaud for the sensor (leave blank for
                         ; default, use this to have a larger StartingBaud)
LaserAutoBaudChoice      ; AutoBaud for the sensor (leave blank for default,
                         ; use this to have a larger units)
</pre><p>The first and default laser is in the "Laser parameters" section. The second laser is in "Laser 2 parameters", the third in "Laser 3 parameters", and so on.</p>
<p><em>LaserType</em> indicates the kind of laser device present: <code>lms2xx</code> for a SICK LMS 200 and compatible, or <code>urg</code> for an Hokoyu URG or UTM. Other types will be added as support is added to ARIA.</p>
<p><em>LaserPortType</em> and <em>LaserPort</em> indicate how the laser is connected to the onboard computer. <em>LaserPortType</em> currently is either blank or has the value <code>serial</code> for a serial port. <em>LaserPort</em> identifies which port of the given type to use: <code>COM1</code>, <code>COM2</code>, <code>COM3</code>, etc. for the first, second, third, etc. serial ports (use the "COM" notation both on Linux and Windows). As support for other connection types such as USB and TCP are added in the future new types will be possible.</p>
<p><em>LaserAutoConnect</em> indicates whether an <a class="el" href="classArLaserConnector.html" title="Create laser interface objects (for any kind of laser supported by ARIA) and connect to lasers based ...">ArLaserConnector</a> object should automatically connect to the laser. If <code>false</code>, then a program must specifically request that the connector initiate the connection; however most programs do this if they expect to use a laser.</p>
<p><em>LaserFlipped</em>, <em>LaserX</em>, <em>LaserY</em>, <em>LaserTh</em>, and <em>LaserZ</em> indicate the physical positioning of the laser on the robot. X, Y, Z and Th give its position relative to the center of the robot. If <em>LaserFlipped</em> is true then the order of the readings supplied by <a class="el" href="classArRangeDevice.html" title="The base class for all sensing devices which return range information from the device (mounted on a r...">ArRangeDevice</a> objects is reversed, so the order is correct for a laser mounted upside-down from normal.</p>
<p>You can list a set of degree values for which laser readings should be ignored after <em>LaserIgnore</em>. Use this if parts of the robot or mounted equipment obscure the laser's field of detection and cause undesirable readings.</p>
<p><em>LaserPowerControlled</em> indidcates whether ARIA should expect that the laser's power state is controlled by the data device connection (e.g. serial port). If true, ARIA should (re)-initialize the laser after opening the connection, and wait for the laser to finish initializing. If false ARIA should expect to be able to read valid data soon after opening the connection. This value should be left as is for any particular type of robot, unless you have modified the way the laser is connected from the standard installation.</p>
<p>The other parameters affect the configuration of the laser itself, and their meaning may depend on the type of laser. You may leave them empty (supply no value) to use defaults for that type.</p>
<h2><a class="anchor" id="ParamFileGPSParams"></a>
GPS Devices</h2>
<pre class="fragment">Section GPS parameters
GPSPossessed false       ; if the robot has a gps
GPSPX -160               ; x location of gps receiver antenna on robot, mm
GPSPY 120                ; y location of gps receiver antenna on robot, mm
GPSType standard         ; type of gps receiver (trimble, novatel, standard)
GPSPort COM2             ; port the gps is on
GPSBaud 9600             ; gps baud rate (9600, 19200, 38400, etc.)
</pre><h2><a class="anchor" id="ParamFileOtherDeviceParams"></a>
Other Accessory Device Flags and Options</h2>
<p>The "Accessories" section contains advisory flags indicating whether the robot has certain optional accessories. These are reflected in <a class="el" href="classArRobot.html" title="Central class for communicating with and operating the robot. ">ArRobot</a> and programs can check them to determine the robot's capabilities, but ARIA's internal default behavior is generally not affected by them:</p>
<pre class="fragment">Section Accessories the robot has
TableSensingIR false     ; if robot has upwards facing table sensing IR
NewTableSensingIR false  ; if table sensing IR are sent in IO packet
FrontBumpers false       ; if robot has a front bump ring
NumFrontBumpers 5        ; number of front bumpers on the robot
RearBumpers false        ; if the robot has a rear bump ring
NumRearBumpers 5         ; number of rear bumpers on the robot
</pre><p>The "Sonar" and "IR" parameters sections indicates the physical layout of the sonar and IR proximity sensors (if any). ARIA will use these to position obstacle readings in space. The "Num" value must be accurate with respect to the number of "Unit" lines that follow, but ARIA uses the number of readings actually supplied by the firmware when calculating and storing readings. (For example, if the robot only provides 8 sonar range readings, only 8 obstacle positions will be calculated and stored.)</p>
<p>(Example from p3dx-sh.p:)</p>
<pre class="fragment">Section Sonar parameters
SonarNum 16              ; number of sonar on the robot
;  SonarUnit &lt;sonarNumber&gt; &lt;x position, mm&gt; &lt;y position, mm&gt; &lt;heading of disc,
;  degrees&gt;
SonarUnit 0 69 136 90
SonarUnit 1 114 119 50
SonarUnit 2 148 78 30
SonarUnit 3 166 27 10
SonarUnit 4 166 -27 -10
SonarUnit 5 148 -78 -30
SonarUnit 6 114 -119 -50
SonarUnit 7 69 -136 -90
SonarUnit 8 -157 -136 -90
SonarUnit 9 -203 -119 -130
SonarUnit 10 -237 -78 -150
SonarUnit 11 -255 -27 -170
SonarUnit 12 -255 27 170
SonarUnit 13 -237 78 150
SonarUnit 14 -203 119 130
SonarUnit 15 -157 136 90

Section IR parameters
IRNum 0                  ; number of IRs on the robot
; For each IR, give a line like this:
;  IRUnit &lt;IR Number&gt; &lt;IR Type&gt; &lt;Persistance, cycles&gt; &lt;x position, mm&gt; &lt;y
;  position, mm&gt;
</pre><p>The "Compass parameters" section indicates what kind of compass and compass installation method the robot has. Almost all robots have a "robot" integrated compass, serialTCM is never used in normal production robots.</p>
<pre class="fragment">Section Compass parameters
;SectionFlags for Compass parameters: 
CompassType robot        ; type of compass: robot (typical configuration), or
                         ; serialTCM (computer serial port)
CompassPort              ; serial port name, if CompassType is serialTCM
</pre> </div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
